/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.optimus.web.mbean;

import com.optimus.app.Application;
import com.optimus.common.cvo.PuntosMapaCVO;
import com.optimus.common.cvo.PuntosMapaCVOList;
import com.optimus.common.util.ApplicationException;
import com.optimus.common.util.Constants;
import com.optimus.common.vo.PuntosMapaVO;
import com.optimus.facade.PlaneamientoFacade;
import com.optimus.facade.impl.PlaneamientoFacadeImpl;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * @author victor
 */
@ManagedBean(name="VerMapaBean")
@SessionScoped
public class VerMapaBean {
    private List<PuntosMapaCVO> listaPuntosMapaVOs;

    private PlaneamientoFacade planeamientoFacade;

    private static  Logger logger = LoggerFactory.getLogger(VerMapaBean.class);

    private String listaPuntosMapaStr;

    public VerMapaBean(){
        planeamientoFacade = new PlaneamientoFacadeImpl();
        listaPuntosMapaStr="";
    }
    public List<PuntosMapaCVO> getListaPuntosMapaVOs() {
        return listaPuntosMapaVOs;
    }

    public void setListaPuntosMapaVOs(List<PuntosMapaCVO> listaPuntosMapaVOs) {
        this.listaPuntosMapaVOs = listaPuntosMapaVOs;
    }

    public String getListaPuntosMapaStr() {
        return listaPuntosMapaStr;
    }

    public void setListaPuntosMapaStr(String listaPuntosMapaStr) {
        this.listaPuntosMapaStr = listaPuntosMapaStr;
    }
    
    public void actualizarIdMapa(ActionEvent actionEvent){
        Long tk= Application.getTicket();
        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest myRequest = (HttpServletRequest)context.getExternalContext().getRequest();
        String idMapaStr=myRequest.getParameter("id-mapa");
        Integer idMapa=idMapaStr!=null?Integer.valueOf(idMapaStr):0;

        Object tkStr =myRequest.getAttribute(Constants.TICKET);
        tk=tkStr!=null?Long.valueOf(tkStr.toString()):0;
        logger.debug("modificacion adicional " );
        logger.debug("ticket = {}, idMapa={} ", new Object[]{tk,idMapa} );
        cargarPuntosMapa(tk,idMapa);
    }


    public void cargarPuntosMapa(Long tk,Integer idMapa){
        try{
            PuntosMapaVO puntosMapaVO = new PuntosMapaVO();
            puntosMapaVO.setTicket(tk);
            puntosMapaVO.setIdMapa(idMapa);
            PuntosMapaCVOList resultado= planeamientoFacade.listarPuntosMapa(puntosMapaVO);
            this.listaPuntosMapaVOs=resultado.getLista();
            StringBuffer sb = new StringBuffer();
            sb.append("[");
            String valueStr="";
            BigDecimal valueDec=null;
            for (PuntosMapaCVO puntosMapaCVO : listaPuntosMapaVOs) {
                if(sb.length()>5){
                    sb.append(",");
                }
                sb.append("{");
                valueDec=puntosMapaCVO.getLatitud();
                valueStr=valueDec.setScale(10,RoundingMode.HALF_EVEN).toPlainString();
                sb.append("lat: ").append(valueStr);
                sb.append(",");
                valueDec=puntosMapaCVO.getLongitud();
                valueStr=valueDec.setScale(10,RoundingMode.HALF_EVEN).toPlainString();
                sb.append("lon: ").append(valueStr);
                sb.append("}");
            }
            sb.append("]");
            listaPuntosMapaStr=sb.toString();
        }catch(ApplicationException ex ){
            logger.debug("No hay datos");
        }
    }
}
